package ar.edu.uns.cs.vyglab.javax.table.cell;

import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.border.Border;
import javax.swing.table.TableCellRenderer;
import java.awt.Color;
import java.awt.Component;

public class ColorRenderer extends JLabel
                           implements TableCellRenderer {
    Border unselectedBorder = null;
    Border selectedBorder = null;
    boolean isBordered = true;

    public ColorRenderer(boolean isBordered) {
        this.isBordered = isBordered;
        setOpaque(true); //MUST do this for background to show up.
    }

    public Component getTableCellRendererComponent(
                            JTable table, Object color,
                            boolean isSelected, boolean hasFocus,
                            int row, int column) {
    	if ( color instanceof Color )
    	{
	        Color newColor = (Color)color;
	        setBackground(newColor);
	        setBackground(newColor);
	        if (isBordered) {
	            if (isSelected) {
	                if (selectedBorder == null) {
	                    selectedBorder = BorderFactory.createMatteBorder(2,5,2,5,
	                                              table.getSelectionBackground());
	                }
	                setBorder(selectedBorder);
	            } else {
	                if (unselectedBorder == null) {
	                    unselectedBorder = BorderFactory.createMatteBorder(2,5,2,5,
	                                              table.getBackground());
	                }
	                setBorder(unselectedBorder);
	            }
	        }
    	}
        return this;
    }
}
